home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Installation Tools & Overlays 1999 May
/
SGI IRIX Installation Tools & Overlays 1999 May - Disc 2.iso
/
relnotes
/
compiler_eoe
/
ch1.z
/
ch1
Wrap
Text File
|
1999-04-19
|
38KB
|
1,059 lines
- 1 -
7.2.1.2m/f Base Compiler Execution Environment Release Notes
- 2 -
1. _I_n_t_r_o_d_u_c_t_i_o_n
These notes describe the second maintenance
update to the IRIX Compiler Execution
Environment (_c_o_m_p_i_l_e_r__e_o_e
version 7.2.1.3m) from Silicon Graphics, Inc.
The IRIX Compiler EOE contains compiler
execution utilities such as _r_l_d and those base
compiler libraries supplied as DSOs (dynamic
shared objects). DSOs are discussed in the
_d_s_o(_5) man page. The IRIX Compiler EOE supports
MIPSpro compilers in either 64-bit, 32-bit, or
high performance 32-bit (n32) compilation modes.
1.1 _7._2._1._3_m/_f _M_a_i_n_t_e_n_a_n_c_e/_F_e_a_t_u_r_e _U_p_d_a_t_e
_I_n_f_o_r_m_a_t_i_o_n
This version of the compiler_eoe subsystem for
IRIX 6.5.3m/f replaces _c_o_m_p_i_l_e_r__e_o_e subsystems
from version 7.2.1 and patches patchSG0003131,
patchSG0003139, patchSG0003247 and
patchSG0003378.
The development environment subsystems of these
patches will not be replaced by this overlay.
The same version of compiler_eoe is part of the
6.5.3 maintenance and feature overlays.
1.2 _S_y_s_t_e_m__P_r_e_r_e_q_u_i_s_i_t_e
If you plan to run _a_n_y IRIX applications, it is
important to note that you mmmmuuuusssstttt install the IRIX
Compiler EOE.
1.3 _R_e_l_e_a_s_e__I_d_e_n_t_i_f_i_c_a_t_i_o_n__I_n_f_o_r_m_a_t_i_o_n
Following is the release identification
information for the IRIX Compiler Execution
Environment (_c_o_m_p_i_l_e_r__e_o_e):
Compiler_eoe
SSSSooooffffttttwwwwaaaarrrreeee PPPPrrrroooodddduuuucccctttt
7.2.1.3m/f
VVVVeeeerrrrssssiiiioooonnnn
- 3 -
IRIX 6.5
IRIX 6.5.3m/f
SSSSyyyysssstttteeeemmmm SSSSooooffffttttwwwwaaaarrrreeee RRRReeeeqqqquuuuiiiirrrreeeemmmmeeeennnnttttssss
1.4 _7._2._1._3_m/_f _I_R_I_X _C_o_m_p_i_l_e_r _E_x_e_c_u_t_i_o_n
_E_n_v_i_r_o_n_m_e_n_t _S_u_b_s_y_s_t_e_m_s
The 7.2.1.3m/f IRIX Compiler EOE software
(_c_o_m_p_i_l_e_r__e_o_e) includes these subsystems:
_c_o_m_p_i_l_e_r__e_o_e._m_a_n._d_s_o IRIX DSO man page
(default)
_c_o_m_p_i_l_e_r__e_o_e._m_a_n._r_e_l_n_o_t_e_s IRIX compiler
execution environment
release notes
(default)
_c_o_m_p_i_l_e_r__e_o_e._m_a_n._u_n_i_x IRIX standard man
pages (default)
_c_o_m_p_i_l_e_r__e_o_e._s_w._c_p_p Source code
preprocessor
(default)
_c_o_m_p_i_l_e_r__e_o_e._s_w._l_b_o_o_t Kernel lboot software
(default)
_c_o_m_p_i_l_e_r__e_o_e._s_w._l_i_b Base compilers
execution libraries
(default)
_c_o_m_p_i_l_e_r__e_o_e._s_w._u_n_i_x IRIX execution
environment
(compiler) (default)
_c_o_m_p_i_l_e_r__e_o_e._s_w_6_4._l_i_b Base compilers
execution libraries
(64-bit) (default on
R8000 and R10000
systems only)
_c_o_m_p_i_l_e_r__e_o_e._s_w_6_4._u_n_i_x IRIX execution
environment ( 64-bit
compiler) (default on
R8000 and R10000
systems only)
If you are installing this option for the first
- 4 -
time, the subsystems marked ``default'' are
those that are installed if you use the ``go''
menu item. To install a different set of
subsystems, use the ``install,'' ``remove,''
``keep,'' and ``step'' commands in _i_n_s_t to
customize the list of subsystems to be
installed, then select the ``go'' menu item.
The compiler_eoe subsystems from the 7.2.1.3m/f
update can only be installed if the
corresponding subsystems from the MIPSpro 7.2.1
release on IRIX 6.5 have already been installed.
1.5 _O_n_l_i_n_e__R_e_l_e_a_s_e__N_o_t_e_s
After you install the online documentation for a
product (the _r_e_l_n_o_t_e_s subsystem), you can view
the release notes on your screen.
If you have a graphics system, select ``Release
Notes'' from the Tools submenu of the Toolchest.
This displays the _g_r_e_l_n_o_t_e_s(1) graphical browser
for the online release notes.
Refer to the _g_r_e_l_n_o_t_e_s(1) man page for
information on options to this command.
If you have a nongraphics system, you can use
the _r_e_l_n_o_t_e_s command. Refer to the _r_e_l_n_o_t_e_s(1)
man page for accessing the online release notes.
1.6 _B_u_g__F_i_x_e_s
The following bug fixes are in the 7.2.1.3m/f
versions of compiler_eoe for IRIX 6.5.3m/f. For
the sake of completeness, fixes in 7.2.1.2m (for
IRIX 6.5.2m) and fixes in 7.2.1.1m (for IRIX
6.5.1m) and version 7.2.1 (for IRIX 6.5) are
also included.
1.6.1 _L_i_b_m _B_u_g_s _F_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1 _r_e_l_e_a_s_e
_o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5
The following libm bug fixes have been applied
from patchSG0003131 into compiler_eoe 7.2.1.1m
for IRIX 6.5.1m:
- 5 -
+o Under certain inputs sin() returns wrong
results on systems running on the R5000
CPU. This has been fixed (BUG ID #591738,
#594226, #595879)
1.6.2 _L_i_b_m_p _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1._2_m
_r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5._2_m
The following libmp bug fixes have been made in
compiler_eoe 7.2.1.3m/f for IRIX 6.5.3m/f:
+o 6.5.[2,3] libmp.so not cpr compliant. This
has been fixed (BUG ID #658799).
+o various routines invoke mp_numthreads
disabling dynamic threads in 6.5. This has
been fixed (BUG ID #638713).
+o cannot change no. of threads between
parallel regions with 7.3 compilers. This
has been fixed (BUG ID #657207).
1.6.3 _L_i_b_m_p _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1._1_m
_r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5._1_m
The following libmp bug fixes have been made in
compiler_eoe 7.2.1.2m/f for IRIX 6.5.2m/f:
+o Use of the environment variable
MP_SLAVE_STACKSIZE would lead to
unpredictable results. This has been fixed
(BUG ID #554156).
+o Fortran MP programs (sproc) with unlimited
stacksizes would fail. This has been fixed
(BUG ID #560707).
+o A Performance degradation would occur when
OMP_DYNAMIC is set and the program is run
under miser. This has been fixed (BUG ID
#587240).
+o Libmp MLD information is incorrect on 128
CPUs. This has been fixed (BUG ID
#599609).
- 6 -
+o OpenMP: misleading error message for
barrier in parallel do.
A barrier within the dynamic extent of a
parallel do gets a misleading error message
at runtime. In particular, a barrier is a
synchronization construct, not a
worksharing construct. This has been fixed
(BUG ID #610654).
+o _DSM_MUSTRUN fails with 1 CPU per node
When using _DSM_MUSTRUN flag and if a node
only has 1 CPU and a process gets scheduled
to run on that node, libmp may attempt to
place a process on a non-existent
processor. This has been fixed (BUG ID
#587240).
1.6.4 _L_i_b_m_p _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1 _r_e_l_e_a_s_e
_o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5
The following libmp bug fixes have been applied
from patchSG0003139 into compiler_eoe 7.2.1.1m
for IRIX 6.5.1m:
+o The OpenMP directive
schedule(static,ichunk) ignored ichunk.
This has been fixed (BUG ID #581775).
+o The OpenMP directive ordered
schedule(dynamic,ichunk) deadlocks if
ichunk is not equal to n/nprocs. This has
been fixed (BUG ID #581835).
+o Program with the OpenMP ORDERED directive
deadlocks under some conditions. This has
been fixed (BUG ID #590252).
1.6.5 _L_i_b_m_p _B_u_g_s _F_i_x_e_d _i_n _t_h_e _7._2._1 _r_e_l_e_a_s_e _o_f
_c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5
The following bugs from earlier IRIX releases
were fixed in compiler_eoe for the IRIX 6.5
release.
+o The routine mp_set_slave_stacksize() should
return the old value of stacksize. This has
- 7 -
been fixed (BUG ID #232474).
+o The MP library had a bug in -n32
compilations where the return address was
improperly aligned in memory. This caused a
problem with stack unwinding by tools such
as dbx and gprof. This has been fixed (BUG
ID #378358).
+o The MP library now provides support for
data distribution, useful in the context of
distributed shared memory machines such as
the Origins. (BUG ID #404228)
+o A user-specified signal handler to trap
control-c (SIGINT) did not work. This has
been fixed (BUG ID #441658).
+o CC Sync counter can occasionally encounter
a hardware deadlock on IP25. With this
version of libmp the use of the CC-sync
counter is disabled by default. (BUG ID
#451258)
+o A bug in the use hardware fetch-and-op on
IP27 systems through the _DSM_FOP
environment variable would cause programs
run with one thread to get deadlocked. With
this version of libmp _DSM_FOP now works
correctly with varying number of threads,
including 1. (BUG ID #455437)
+o On IP27 the environment variable
_DSM_MUSTRUN could sometimes cause multiple
threads to be assigned to the same node,
leading to poor performance. The MP library
now requests a small amount of memory per
node, avoiding corner cases that resulted
in the above problem. (BUG ID #455511)
+o The symbol pm_filldefault referenced by the
MP library was undefined on systems before
IRIX 6.4. To allow execution on earlier
systems (e.g. IRIX 6.2) this symbol needed
- 8 -
to be declared as weak within the library.
This has been fixed. (BUG ID #460617)
+o On Origin-2000 systems although page
migration is disabled by default, once
enabled the migration level requested was
extremely aggressive. The migration level
(if enabled) is now lower, with the value
of 10 on a scale of 1-100. In addition, the
user can control the migration level
explicitly through the environment variable
_DSM_MIGRATION_LEVEL (which can take values
between 1 and 100). (BUG ID #468925)
+o The behavior of two environment variables
was fixed. The first concerns data
placement on Origin-2000 systems:
_DSM_PLACEMENT is now the recommended way
to obtain either FIRST_TOUCH data placement
(default) or ROUND_ROBIN placement
(optional). The second environment variable
controls the underlying barrier
implementation in the MP runtime:
_DSM_BARRIER can now be set to FOP,
enabling the hardware uncached/fetchop
barrier implementation which is disabled by
default. (BUG ID #474179)
+o A bug in the handling of a zero-trip
parallel loop with either dynamic or gss
scheduling could cause the loop to spin
indefinitely. This has been fixed (BUG ID
#520385).
+o A bug in program termination could result
in error messages of the form "Error doing
waitpid for slave termination". when the
user program had installed a SIGCLD
handler. This has been fixed (BUG ID
#538673).
1.6.6 _r_l_d _a_n_d _r_q_s _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1._2_m
_r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5._2_m
Various performance improvements have
reduced cpu time spent in rld (in small
ways). (Bug #608296) (Bug #641687) (Bug
- 9 -
#641192)
+o By default rld no longer re-evaluates name
bindings on dlclose() (The _RLD_ARGS -f
argument is accepted as also meaning use
this new default behavior). This makes
dlclose() fast and eliminates many lazy-
text-resolves. It will also affect the
operation of programs that rely on names
being rebound to a different function/data
item after a dlclose(). Such programs are
erroneous. If _RLD_ARGS has the -s option
present, the old slow method of dlclose is
used (this is provided so erroneous
programs depending on the old method can be
made to work). [Details: Each name
_should_ only be bound once by rld, but in
complicated circumstances names can be
rebound. If the result of application
actions (like dlclose()) is that the
rebinding finds a different external
definition the result can be application
problems or an application crash (rld does
not realize this has happened and will not
give a warning). (In addition, having a
weak name defined in one DSO and a strong
version in a DSO loaded later leads to
'undefined name bindings' and potentially
inconsistent application behavior. This
has always been true but not mentioned
earlier.).] (Bug #426852)
+o If an application did an sgidladd() or
dlopen(...RTLD_GLOBAL), followed by a
dlopen(...RTLD_LOCAL), (and the call to
sgidladd/dlopen(...RTLD_GLOBAL) was itself
done from a dlopened/dladded DSO) name
lookups by rld might not find names made
global by the sgidladd() or
dlopen(...RTLD_GLOBAL). This was a bug
introduced in patch 3378. (Bug #644389)
+o If a DSO or executable had more than 4096
conflict symbols, rqs could core dump. Now
hash table is defined allowing up to
262,000+ conflict symbols (the max size
allowed: if a smaller will work a smaller
is used). (Bug #638915)
+o If a lazy-text-resolution call involved
floating point argument registers and if a
- 10 -
call in the -init code in the DSO loaded
involved floating point registers the
lazy-text call fp argument registers would
be destroyed by the -init arguments. Due
to details of argument register passing
this bug is seen most readily with the
n32/64 ABIs, though it can be reproduced in
any of the ABIs (this bug has existed since
IRIX5.0 but apparently no one had
encountered it before!). (Bug #649041)
+o On delay-loads of DSO's, versions have been
ignored for almost all earlier releases of
rld. Now rld checks the version number on
delay-loads too. The new _RLD_ARGS option
-idv turns off DSO version checking for
delay-loads in rld and rld.debug, restoring
the old, broken behavior. (Bug #651001)
+o Debugger stack traces through rld would
sometimes stop in rld due to mistakes in
some hand-written assembly code in rld.
Now the the stack traces show the callers
back to main() as appropriate. (Bug
#630359)
+o Now rld obeys the general rule that
processing is breadth-first (loading of
DSOs from liblists and dlsym() name
resolution are examples). [Details: In the
past it did almost-breadth-first ordering.
Because seeing an error in ordering
required having duplicate symbol
definitions at least 4 levels deep in DSO
nested liblists, it is unlikely this bug
affected any application. But the ABIs
have always been clear and now rld obeys
the ABIs.] (Bug #629117)
+o In the case of a dlclose(), all -fini
execution is done for a set of DSOs (where
this is the dlclose of the last reference)
before any are unmapped. (Bug #629128)
+o Nested dlopen/sgidladd/delay-load (meaning
invoking dlopen/sgidladd/delay-load from
within the -init or -fini code of a
dlopen/sgidladd/delay-load) now works even
in the pthreads and sproc threads cases.
Nested dlopen/sgidladd/delay-load was
always problematical (though if no pthreads
- 11 -
or sproc threads were in use it might have
appeared to work as long as none of the
nested dlopen/etc failed). Use nested
dlopen/sgidladd only when absolutely
required. Use -init only when absolutely
required, as the nested dependencies make
static prediction of the ordering in which
the -init code is to be run difficult. C++
global constructors ordering across
compiliation units has always been
unspecified by the C++ definition. Adding
delay-load to the set of DSOs with mutual
constructor calls makes the ordering even
less predictable. Using/setting
sigprocmask(2) in -init or -fini code is
not a good idea as the set of masks seen as
ON is affected by rld. The precise
behavior of sigprocmask(2) in -init or
-fini code depends on which of 1) pthreads,
2) sproc threads, or 3) neither is in use
(and the details are not specified in these
release notes: best to avoid
setting/resetting the sigprocmask() in
-init or -fini code). In addition, it is
still difficult to debug -init code in the
application startup. (Bug #629707)
+o If the filesystem of a DSO had no XFS
attributes, rqs could fail (refuse to
update a DSO to allow quickstart) and fail
to print the proper reason message. (The
system would operate properly in spite of
this rqs error.) Now rqs understands that
ENOATTR is not really a failure, allowing
the DSO to be requickstarted and uses
strerror() to properly print all errno
values when there is an error . (Bug
#634151)
+o rld got delay load DSO visibility slightly
wrong in MIPSpro7.2.1. Too restrictive in
symbol visibility. (Bug #547873)
+o ssrun(1) could interact with rld, causing
some -init functions to not run correctly.
This fix corrects the rld part in this.
[Note: it is erroneous for a signal handler
to call dlopen(), dlclose() sgidladd(),
sgidlopen_version(), dlsym(), or dlerror().
And no function call in a signal handler is
allowed to cause a delay-load of a DSO
- 12 -
(this is an implicit dlopen so is not
correct). In fact very few functions are
legally callable from a signal handler. the
dl* functions are not so callable. It is
up to applications to ensure such does not
happen. ] (Bug #648641)
1.6.7 _r_l_d _a_n_d _r_q_s _B_u_g_s _f_i_x_e_d _s_i_n_c_e _t_h_e _7._2._1._1_m
_r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5._1_m
The following rld and rqs bug fixes have been
made in compiler_eoe 7.2.1.2m/f for IRIX
6.5.2m/f:
+o RLD: potential deadlock and signal-mask
handling problems. This has been fixed
(BUG ID #549912).
+o Rld needs to emit better message in case of
bad DSO/executable. This has been fixed
(BUG ID #554703).
+o Incorrrect implementation of
add_version_to_name() in rld. This has
been fixed (BUG ID #558948).
+o Rqsall would under certain circumstances
fall into an infinite loop. This has been
fixed (BUG ID #568510).
+o A call occurs to a function defined by rld
at 0xffffffff. This has been fixed (BUG ID
#586353).
+o Rld warning does not give object name This
has been fixed (BUG ID #589044).
+o Rld incorrectly performs an alloca() in a
loop. This has been fixed (BUG ID #600777).
+o Rqsall manpage example doesn't work. This
has been fixed (BUG ID #604402).
+o Rld RHF_NO_LIBRARY_REPLACEMENT is not
honored. This has been fixed (BUG ID
#608753).
+o Rld is too large and could be smaller with
its own vsnprintf. This has been fixed
(BUG ID's #614133, #615089).
- 13 -
+o Rld does extra useless lookups degrading
performance. This has been fixed (BUG ID
#615441).
+o Application performance doing dlopens slow
due to poor string compare code. This has
been fixed (BUG ID #620471).
1.6.8 _r_l_d _a_n_d _r_q_s _B_u_g_s _F_i_x_e_d _i_n _t_h_e _7._2._1
_r_e_l_e_a_s_e _o_f _c_o_m_p_i_l_e_r__e_o_e _f_o_r _I_R_I_X _6._5
The following bugs from earlier IRIX releases
were fixed in compiler_eoe for the IRIX 6.5
release.
+o dlopen(NULL) hangs on IRIX 6.2. This has
been fixed (BUG ID #290198).
+o LD_LIBRARY_PATH environment variables of
several hundred characters would cause rld
corruption on IRIX 6.2. This has been
fixed (BUG ID #337982).
+o rld would not handle executables containing
prefetch instructions correctly on IRIX
6.2. This has been fixed (BUG ID #352206).
+o Under certain circumstances rld would loop
in dlopen() or dlsym() on IRIX 6.2. This
has been fixed (BUG ID #364118).
+o Under certain circumstances the IRIX 6.2
version of rqs would corrupt libraries.
This has been fixed (BUG ID #366990).
+o The IRIX 6.2 version of rld drops core on
wolf compiled -O3 and pixified. This has
been fixed (BUG ID #383655).
+o Initialized variables would be resolved
differently between the 5.3 and 6.2.
versions of rld. This has been fixed (BUG
ID #387407).
+o Under certain circumstances rld would hang
in a C++ program running pthreads on IRIX
6.2. This has been fixed (BUG ID #412725).
- 14 -
+o 6.2: dlopen (..., RTLD_NOW) would not
report undefined symbols. This has been
fixed (BUG ID #428927).
+o Under circumstances rld would encounter a
race condition when running MP programs
under IRIX 6.2. This has been fixed (BUG
ID #433288).
+o IRIX 6.2 rld crash trying to update
readonly data. This has been fixed (BUG ID
#449282).
+o IRIX 6.2 and 6.3 rld security
vulnerability. This has been fixed (BUG ID
#482870).
+o Under certain circumstances a multi-got DSO
would get wrong relocation information.
This has been fixed (BUG ID #483964).
+o There was a need to suppress rld warnings
about ABI in most cases. This has been
fixed (BUG ID #503926).
+o The rld delay-load was slow if many DSOs
were delay loaded. This has been fixed
(BUG ID #506076).
+o rld: eliminate bloat with stubs. (BUG ID
#506166)
+o The following rld warning message was
unclear.
rld: Warning: The aggregate IEEE
exceptions required (0x10) contradicts the aggregate IEEE
exceptions permitted (0x8).
This has been explained in the rld(1) man
page (BUG ID #507206).
+o t_splay causes stress test shcreate to
sometimes SIGBUS. This has been fixed (BUG
ID #520846).
+o An rld error would cause Cosmoplayer to be
unable to load most worlds. This has been
fixed (BUG ID #523673).
- 15 -
+o Under certain circumstances rld would have
problems with dlclose(). This has been
fixed (BUG ID #527001).
+o Under certain circumstances rld would dump
core. This has been fixed (BUG ID
#530749).
+o Under certain circumstances rld fails to
handle a multigot shared object that is
relocated. This has been fixed (BUG ID
#534245).
+o Unnecessary conflict resolution makes
dlopen() slow. This has been fixed (BUG ID
#554894).
+o Under certain circumstances
sgidlopen_version() does not work properly.
This has been fixed (BUG ID #560586).
+o Under certain circumstances rqs would dump
core loading n32 mips3 shared objects.
This has been fixed (BUG ID #536186).
+o Rqsall needed to prevent libraries with
same soname from having the same timestamp.
This has been fixed (BUG ID #538535).
+o Rqsall: libraries fail to requickstart when
the so_locations region is fragmented.
This has been fixed (BUG ID #555509).
+o Under certain circumstances rqsall would
use inappropriate start addresses for
shared object files. This has been fixed
(BUG ID #556199).
+o Under certain circumstances rqsall computes
library sizes incorrectly. This has been
fixed (BUG ID #561583).
+o Rqsall needs to avoid placing DSO's between
0x400000 and 0x2000000 for o32 objects.
This has been fixed (BUG ID #566180).
- 16 -
1.7 _P_r_o_d_u_c_t__S_u_p_p_o_r_t
Silicon Graphics, Inc., provides a comprehensive
product support maintenance program for its
products.
If you are in the U.S. or Canada and would like
support for your Silicon Graphics-supported
products, contact the Technical Assistance
Center at 1-800-800-4SGI. If you are outside
these areas, contact the Silicon Graphics
subsidiary or authorized distributor in your
country.